/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.ArrayList;
import util.Criptografia;

/**
 *
 * @author gabrielbmoro
 */
public class Membro_Externo extends Usuario {

    private String cpf;

    public Membro_Externo(String nome, String email,
            Universidade universidade, String cpf, String senha) {
        super.nome = nome;
        super.email = email;
        this.cpf = cpf;
        super.universidade = universidade;
        super.senha = senha;
        try {
            if (super.senha != null) {
                super.senha = Criptografia.md5(super.senha);
            }
        } catch (NoSuchAlgorithmException erro) {
        }
        super.table = "membroexterno";
    }

    public Membro_Externo() {
        super.table = "membroexterno";
    }
    
    public Membro_Externo(String name){
        this.nome= nome;
    }

    public boolean registrarDados() {
        try {
            String sql = "insert into " + super.table + "(nome,cpf,email,senha,universidade) values(?,?,?,?,?);";
            super.conecta = ConectaBD.getInstance();
            super.preparedStatement = super.conecta.getConnection().prepareStatement(sql);
            super.preparedStatement.setString(1, this.nome);
            super.preparedStatement.setString(2, this.cpf);
            super.preparedStatement.setString(3, super.email);
            super.preparedStatement.setString(4, super.senha);
            super.preparedStatement.setString(5, super.universidade.getNome());
            super.preparedStatement.execute();
            super.preparedStatement.close();
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            super.conecta.encerrarConexao();
        }
        return false;
    }
    
    public boolean alterarDados(int idUser, String email, Universidade universidade){
        this.email= email;
        this.universidade= universidade;
        try {
            String sql = "update " + super.table + " set email=?,universidade=? where idmembroexterno="+idUser+";";
            super.conecta = ConectaBD.getInstance();
            super.preparedStatement = super.conecta.getConnection().prepareStatement(sql);
            super.preparedStatement.setString(1, this.email);
            super.preparedStatement.setString(2, this.universidade.getNome());
            super.preparedStatement.execute();
            super.preparedStatement.close();
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            super.conecta.encerrarConexao();
        }
        return false;
    }

    @Override
    public ArrayList<String> acessarPerfil(int id) {
        String sql = "select nome,email,universidade from " + super.table + " where idmembroexterno=" + id + ";";
        try {
            this.conecta = ConectaBD.getInstance();
            super.statement = this.conecta.getConnection().createStatement();
            super.resultSet = super.statement.executeQuery(sql);
            ArrayList<String> resultado = new ArrayList<>();
            while (super.resultSet.next()) {
                resultado.add(super.resultSet.getString(1));
                resultado.add(super.resultSet.getString(2));
                resultado.add(super.resultSet.getString(3));
            }
            super.resultSet.close();
            super.statement.close();
            return resultado;
        } catch (SQLException sqlErro) {
            sqlErro.printStackTrace();
        }
        return null;
    }
    public ArrayList<String> recuperarRegistrosDeColegas(){
        String sql = "select nome from " + super.table +";";
        try {
            this.conecta = ConectaBD.getInstance();
            super.statement = this.conecta.getConnection().createStatement();
            super.resultSet = super.statement.executeQuery(sql);
            ArrayList<String> resultado = new ArrayList<>();
            while (super.resultSet.next()) {
                resultado.add(super.resultSet.getString(1));
            }
            super.resultSet.close();
            super.statement.close();
            return resultado;
        } catch (SQLException sqlErro) {
            sqlErro.printStackTrace();
        }
        return null;
    }
    public int recuperarIdMembroExterno() {
        try {
            String sql = "select idmembroexterno from " + super.table + " where nome=\"" + this.nome + "\";";
            super.conecta = ConectaBD.getInstance();
            super.statement = super.conecta.getConnection().createStatement();
            super.resultSet = super.statement.executeQuery(sql);
            int id = 0;
            while (super.resultSet.next()) {
                id = super.resultSet.getInt(1);
            }
            return id;
        } catch (SQLException ex) {

        } finally {

        }
        return 0;
    }
}
